package com.qzsoft.zhjd.asphalt.modules.asphaltdata.service;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qzsoft.zhjd.asphalt.modules.asphaltdata.dto.AsphaltDataDetailsDto;
import com.qzsoft.zhjd.asphalt.modules.asphaltdata.dto.DayDataStatisticsDto;
import com.qzsoft.zhjd.asphalt.modules.asphaltdata.dto.ProduceAsphaltDto;
import com.qzsoft.zhjd.asphalt.modules.asphaltdata.dto.ReportCountDto;
import com.qzsoft.zhjd.asphalt.modules.asphaltdata.entity.AsphaltDataEntity;

/**
 * @ClassName AsphaltDataService
 * @Description 沥青数据业务接口
 * @author linhuawei
 * @since 2021-11-23
 */
public interface AsphaltDataService extends IService<AsphaltDataEntity> {


    /**
     * @Title produceAsphalt
     * @Description 油石比检测
     * @param params 查询条件
     * @return 油石比检测
     */
    public List<ProduceAsphaltDto> produceAsphalt(Map<String, Object> params);

    /**
     * @Title dayDataStatistics
     * @Description 全天数据统计
     * @param params 查询条件
     * @return 全天数据统计
     */
    public DayDataStatisticsDto dayDataStatistics(Map<String, Object> params);

    /**
     * @Title reportCount
     * @Description 沥青混合料生产数据报表统计
     * @param params 查询条件
     * @return 沥青混合料生产数据报表统计
     */
    public List<ReportCountDto> reportCount(Map<String, Object> params);

    /**
     * @Title details
     * @Description 获取数据详情
     * @param id 数据主键
     * @return 数据详情
     */
    public AsphaltDataDetailsDto details(String id);


    /**
     * @Title selectTopOne
     * @Description 获取符合条件的第一条数据
     * @param params 查询条件
     * @return 符合条件的第一条数据
     */
    public AsphaltDataEntity selectTopOne(Map<String, Object> params);

    /**
     * 获取所有有数据得时间
     * @return
     */
    List<String> requestTime(Map<String, Object> params);

    /**
     * 根据级配类型获取生产配比
     * @param type
     * @return
     */
    List<Map<String, Object>> getMatchCode(String type);

    /**
     * 获取生产配比
     * @return
     */
    List<Map<String, Object>> getInitMatchCode();

    /**
     * @Title getLatestData
     * @Description 获取符合条件的最新一条数据
     * @param params 查询条件
     * @return 最新一条数据
     */
    AsphaltDataEntity getLatestData(Map<String, Object> hashMap);

    /**
     * @Title getProduceTime
     * @Description 获取生产时间
     * @param params 查询条件
     * @return 生产时间列表
     */
    public List<String> getProduceTime(Map<String, Object> params);

    Long saveDataBaseUpload(JSONObject json);

    Long saveDataBaseUploadXg(JSONObject json);

    Long saveDataBaseUploadYb(JSONObject json);

    Long saveDataBaseUploadXgsb(JSONObject json);

    Long saveDataBaseUploadMln(JSONObject json);

    Long saveDataBaseUploadTxgb(JSONObject json);
}
